import { TMakeToJSONCompiler } from './index';
import * as fs from 'fs';
import * as path from 'path';

// 简单的测试脚本，演示如何使用编译器
const testSimpleScript = async () => {
  const compiler = new TMakeToJSONCompiler();
  
  // 简单的TMake脚本
  const simpleScript = `
    TMake版本("1.0.0")
    结绳编译器版本("4.6")
    设置变量("项目名称", "我的项目")
    设置变量("版本号", "1.0.0")
    设置变量("输出目录", "./dist")
    设置输出文件("测试程序.exe")
    设置目标平台("Linux")
    设置优化级别(2)
    设置日志级别("warning")
    如果 平台为Linux()
        设置编译器("g++")
        链接动态库("libc++.so")
    结束 如果
    编译程序(读取源文件列表("./test"), 输出文件)
    发布模式()
  `;
  
  try {
    const result = compiler.compile(simpleScript);
    
    if (result.success) {
      // 移除调试日志
      try {
        fs.writeFileSync('compiler-config.json', result.jsonConfig!);
        // 移除调试日志
      } catch (error) {
        // 移除调试日志
      }
    } else {
      // 移除调试日志
      if (result.warnings.length > 0) {
        // 移除调试日志
      }
    }
  } catch (error) {
    // 移除调试日志
  }
};

// 测试复杂脚本
const testComplexScript = async () => {
  const compiler = new TMakeToJSONCompiler();
  
  // 复杂的TMake脚本
  const complexScript = `
    TMake版本("2.1.0")
    结绳编译器版本("5.2.1")
    设置变量("项目名称", "我的项目")
    设置变量("版本号", "1.0.0")
    设置变量("输出目录", "./dist")
    设置变量("文件名", 字符串拼接(项目名称, "-", 版本号, ".exe"))
    设置变量("完整路径", 路径拼接(输出目录, 项目名称, 版本号))
    设置输出文件(路径拼接(完整路径, 文件名))
    设置目标平台("Linux")
    设置优化级别(2)
    设置日志级别("warning")
    如果 平台为Linux()
        设置编译器("g++")
        链接动态库("libc++.so")
    结束 如果
    发布模式()
  `;
  
  try {
    const result2 = compiler.compile(complexScript);
    
    if (result2.success) {
      // 移除调试日志
      try {
        fs.writeFileSync('compiler-config-complex.json', result2.jsonConfig!);
        // 移除调试日志
      } catch (error) {
        // 移除调试日志
      }
    } else {
      // 移除调试日志
    }
    
    // 移除调试日志
  } catch (error) {
    // 移除调试日志
  }
};

// 运行测试
const runTests = async () => {
  await testSimpleScript();
  await testComplexScript();
};

// 执行测试
runTests().catch(error => {
  // 移除调试日志
});